﻿<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
  <title>Editor</title>
  <style type="text/css" media="screen">

    .ace_editor {
        position: relative !important;
        border: 1px solid lightgray;
        margin: auto;
        height: 200px;
        width: 80%;
    }

    .ace_editor.fullScreen {
        height: auto;
        width: auto;
        border: 0;
        margin: 0;
        position: fixed !important;
        top: 0;
        bottom: 0;
        left: 0;
        right: 0;
        z-index: 10;
        background: white;
    }

    .fullScreen {
        overflow: hidden
    }

    .scrollmargin {
        height: 500px;
        text-align: center;
    }

    .large-button {
        color: lightblue;
        cursor: pointer;
        font: 30px arial;
        padding: 20px;
        text-align: center;
        border: medium solid transparent;
        display: inline-block;
    }
    .large-button:hover {
        border: medium solid lightgray;
        border-radius: 10px 10px 10px 10px;
        box-shadow: 0 0 12px 0 lightblue;
    }
  </style>
</head>
<body>
<div class="scrollmargin">
    <span onclick="scroll()" class="large-button">
    scroll down &dArr;
    </span>
</div>
<pre id="editor">function foo(items) {
    var i;
    for (i = 0; i &lt; items.length; i++) {
        alert("Ace Rocks " + items[i]);
    }

}</pre>
<div class="scrollmargin">
    <div style="padding:20px">
        press F11 to switch to fullscreen mode
    </div>
    <span onclick="add()" class="large-button" title="Shift+Enter">+</span>
</div>

<script src="./src/ace.js" type="text/javascript" charset="utf-8"></script>
<script>
var $ = document.getElementById.bind(document);
var dom = require("ace/lib/dom");

//add command to all new editor instaces
require("ace/commands/default_commands").commands.push({
    name: "Toggle Fullscreen",
    bindKey: "F11",
    exec: function(editor) {
        dom.toggleCssClass(document.body, "fullScreen")
        dom.toggleCssClass(editor.container, "fullScreen")
        editor.resize()
    }
}, {
    name: "add",
    bindKey: "Shift-Return",
    exec: add
})

// create first editor
var editor = ace.edit("editor");
editor.setTheme("ace/theme/twilight");
editor.session.setMode("ace/mode/javascript");


var count = 1;
function add() {
    var oldEl = editor.container
    var pad = document.createElement("div")
    pad.style.padding = "40px"
    oldEl.parentNode.insertBefore(pad, oldEl.nextSibling)

    var el = document.createElement("div")
    oldEl.parentNode.insertBefore(el, pad.nextSibling)

    count++
    var theme = "ace/theme/" + themes[Math.floor(themes.length * Math.random() - 1e-5)]
    editor = ace.edit(el)
    editor.setTheme(theme)
    editor.session.setMode("ace/mode/javascript")

    editor.setValue([
        "this is editor number: ", count, "\n",
        "using theme \"", theme, "\"\n",
        ":)"
    ].join(""), -1)

    scroll()
}


function scroll(speed) {
    var top = editor.container.getBoundingClientRect().top
    speed = speed || 10
    if (top > 60 && speed < 500) {
        if (speed > top - speed - 50)
            speed = top - speed - 50
        else
            setTimeout(scroll, 10, speed + 10)
        window.scrollBy(0, speed)
    }
}

var themes = {
    bright: [ "chrome", "clouds", "crimson_editor", "dawn", "dreamweaver", "eclipse", "github",
        "solarized_light", "textmate", "tomorrow"],
    dark: [ "clouds_midnight", "cobalt", "idle_fingers", "kr_theme", "merbivore", "merbivore_soft",
        "mono_industrial", "monokai", "pastel_on_dark", "solarized_dark",  "tomorrow_night",
        "tomorrow_night_blue", "tomorrow_night_bright", "tomorrow_night_eighties", "twilight", "vibrant_ink"]
}
themes = [].concat(themes.bright, themes.dark)
setTimeout(function(){ window.scrollTo(0,0) }, 10)
</script>

</body>
</html>